考題日期:2016/03/22
題號:10106
星等:2
語言:C++
題目:
題意:
將輸入的兩個大數字進行相乘。
程式:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a,b;
int A[250]={0},B[250]={0};
while(getline(cin,a))
{
getline(cin,b);
for(int i = 0 ;i < a.length();i++)
A[i] = a[a.length()-i-1] - '0';
for(int i = 0 ;i < b.length();i++)
B[i] = b[b.length()-i-1] - '0';
int C[501]={0};
for(int i = 0 ;i < a.length();i++)
{
for(int j = 0 ;j < b.length();j++)
{
int x = A[i] * B[j];
C[i+j] += x;
C[i+j+1] += C[i+j] / 10;
C[i+j] = C[i+j] % 10;
}
}
int key = a.length() + b.length();
bool k = false;
for(int i = key ;i >=0;i--)
{
if(C[i] != 0)
k = true;
if(k)
cout<<C[i];
}
cout<<endl;
}
return 0;
}
測資: